package br.com.fsa.aplication.Model.bean;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;


@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Veiculo implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column (nullable = false)
	private Long veiculoID;
	@Column (nullable = false , length = 10)
	private String placa;
	@Column (nullable = false)
	private Integer capacidade;
	@Enumerated(EnumType.STRING)
	@Column (nullable = false , length = 20)
	private VeiculoStatus disponivel;
	@OneToMany(mappedBy="veiculo",fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private Set<Conhecimento> listaConhecimento = new HashSet<Conhecimento>();
	public Long getVeiculoID() {
		return veiculoID;
	}
	public String getPlaca() {
		return placa;
	}
	public void setPlaca(String placa) {
		this.placa = placa;
	}
	public Integer getCapacidade() {
		return capacidade;
	}
	public void setCapacidade(Integer capacidade) {
		this.capacidade = capacidade;
	}
	public VeiculoStatus getDisponivel() {
		return disponivel;
	}
	public void setDisponivel(VeiculoStatus disponivel) {
		this.disponivel = disponivel;
	}
	public Set<Conhecimento> getListaConhecimento() {
		return listaConhecimento;
	}
	public void setListaConhecimento(Set<Conhecimento> listaConhecimento) {
		this.listaConhecimento = listaConhecimento;
	}
	
	

}
